class Observer{
    constructor(data){
        this.walk(data)
    }
    walk(data){
        //1.判断data是否为对象
        if(!data || typeof data != 'object') return ;
        //2.遍历对象的所有属性
        Object.keys(data).forEach(key => {

        })
    }
    defineReactive(obj,key,val){

        const that = this ;
        //处理val是对象的情况
        this.walk(val)

        Object.defineProperty(obj,key,{
            enumerable:true,
            configurable:true,
            get(){
                return val
            },
            set(newVal){
                if(newVal === val ) return ;
                val =newVal ;

                //newVal是个对象，需要重新创建响应式
                that.walk(newVal)

                //发送通知
            }
        })
    }
}